package object_Test;

import animal.Dog;
import superTest.China;


interface ITest{
    void test();
}

class TestImpl implements ITest{

    @Override
    public void test() {
        System.out.println("哈哈");
    }
}
public class ObjectTest {
    public static void main(String[] args) {
        //接口引用
        ITest a=new TestImpl();
        //数组引用
        int[] data=new int[10];
        //只要是引用类型，都可以用Object接收
        Object obj1=a;
        Object obj2=data;
        //Object是所有类（JDK本身的类，自定义的类都是0bject的子类）
//        Object obj1="abc";
//        Object obj3=new China();
//        Object obj2=new Dog();
//        System.out.println(obj2);
//        Student stu1=new Student("张三",80);
//        Student stu2=new Student("李四",85);
//        Student stu3=new Student("李四",85);
//        //"=="是比较值得，对于引用数据类型来说，就是在比较地址
//        System.out.println(stu1==stu2);
//        System.out.println(stu2==stu3);
//        //此时如果需要比较两个对象的值，就要按照比较规则重写equals方法
//        System.out.println(stu2.equals(stu3));
//        System.out.println(stu2.equals(stu1));
    }

}
class Student{
    private String name;
    private  int score;

    public Student(String name, int score) {
        this.name = name;
        this.score = score;
    }


    @Override
    public boolean equals(Object obj){
        //如果当前对象就是obj，也就是自己和自己比较
        if (this==obj){
            return true;
        }
        //此时当前对象和obj指向的对象不是一个地址
        if (obj instanceof Student){
            //此时obj指向的对象确实Student类的对象，但是和当前对象不是同一个对象
            Student stu=(Student) obj;
            return this.score==stu.score&&this.name.equals(stu.name);
        }
        return false;
    }
}